/**
 * Definition for a binary tree node.
  * struct TreeNode {
       *     int val;
        *     struct TreeNode *left;
         *     struct TreeNode *right;
          * };
           */
           /**
            * Note: The returned array must be malloced, assume caller calls free().
             */
             typedef struct TreeNode TreeNode;
             void postorder(TreeNode* root, int* returnSize, int* arr) {
                     if (root == NULL)
                             return;
                                
                                    postorder(root->left, returnSize, arr);
                                        postorder(root->right, returnSize, arr);
                                            arr[(*returnSize)] = root->val;
                                                (*returnSize)++;
                                                    return;
             }
             int* postorderTraversal(struct TreeNode* root, int* returnSize) {
                     int* arr = (int*)calloc(100, sizeof(int));
                         *returnSize = 0;
                             postorder(root, returnSize, arr);
                                 return arr;
             }
             }
             }